package ar.edu.isft189.pdfBox.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import ar.edu.isft189.dao.MesaExamenCrudDao;
import ar.edu.isft189.model.AlumnoExamen;
import ar.edu.isft189.pdfBox.PdfBox;

public class PdfBoxServiceMesaExamen {

	/**
	 * @autor David
	 * 
	 * Metodo que inicializa la libreria de exportacion de pdf
	 * para el formulario A3a. E invoca a las clases de PDFBox y les pasa
	 * los parametros para que complete el formulario
	 * 
	 * @param request
	 * @return boolean
	 */
	public boolean pdfA3a(HttpServletRequest request) {

		try {
			
			MesaExamenCrudDao dao = new MesaExamenCrudDao();
			HashMap<String, String> mapHead = new HashMap<String, String>();
			List<String> lst = null;
			ArrayList<List<String>> alumnList = new ArrayList<List<String>>();
			List<AlumnoExamen> lstDao;
			
			int mesaId = Integer.parseInt(request.getParameter("idm")
					.toString());			
			mapHead.put("isft", "189");
			mapHead.put("carrera", request.getParameter("carrera").toString());
			mapHead.put("asignatura", request.getParameter("materia").toString());
			mapHead.put("profesor", request.getParameter("prof").toString());	

			/*
			 * Intancio la clase que se encarga de completar el formulario y le
			 * paso el nombre del formulario a cargar
			 */
			PdfBox pdfBox = new PdfBox("A3a");					

			// Inserto los datos de la cabecera
			pdfBox.insertFields(mapHead);

			// Obtengo los datos de los alumnos
			lstDao = dao.getStudentsByIdm(mesaId);
		
			// Inserto los datos de la grilla
			boolean first = true;
			int nro = 0;
			for (AlumnoExamen ae : lstDao) {
				
				lst = new ArrayList<String>();
			
				lst.add(0, Integer.toString(nro + 1));
				lst.add(1, ae.getApenom());		
				lst.add(2, Integer.toString(ae.getDni()));						
				lst.add(3, ""); 
				lst.add(4, Integer.toString(ae.getNota()));
				lst.add(5, Integer.toString(ae.getNota()));
				lst.add(6, Integer.toString(ae.getNota()));
				
				alumnList.add(lst);
			}
			
			//Agrego directamente toda la lista de alumnos
			pdfBox.insertRowFieldsMasive(alumnList, first);
			
			//Visualizo el PDF 
			pdfBox.preview();

			return true;
		} catch (Exception e) {

			e.printStackTrace();
			return false;
		}
	}
}